using ZR.Model.BaseFrame.Dto;
using ZR.Model.BaseFrame.Entity;
using ZR.Model.BaseFrame;

namespace ZR.Service.BaseFrame.IService
{
    /// <summary>
    /// 模块服务接口
    /// </summary>
    public interface IModuleServiceBase : IBaseService<ModuleEntity>
    {

            /// <summary>
            /// 添加模块
            /// </summary>
            /// <param name="model"></param>
            /// <returns></returns>
            Task<bool> AddModule(ModuleEntity model);

            /// <summary>
            /// 删除模块
            /// </summary>
            /// <param name="ids"></param>
            /// <param name="isRealDel"></param>
            /// <returns></returns>
            Task<bool> DeleteModule(long[] ids, bool isRealDel = true);

            /// <summary>
            /// 修改模块
            /// </summary>
            /// <param name="model"></param>
            /// <returns></returns>
            Task<bool> ModifyModule(ModuleEntity model);

            /// <summary>
            /// 变更模块状态
            /// </summary>
            /// <param name="req"></param>
            /// <returns></returns>
            Task<bool> ChangeModuleState(ChangeModuleStateReq req);


            /// <summary>
            /// 获取模块树选择列表
            /// </summary>
            /// <param name="req"></param>
            /// <returns></returns>
            Task<List<TreeNodeInfo>> GetModuleTreeSelectList(GetModuleTreeSelectListReq req);

            /// <summary>
            /// 获取模块分页列表
            /// </summary>
            /// <param name="req"></param>
            /// <returns></returns>
            Task<PagedInfo<ModuleListItemDto>> GetModulePageList(GetModulePageListReq req);

        

            /// <summary>
            /// 获取模块详情
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            Task<ModuleDetailDto> GetModuleDetail(long id);

    

    }
}
